package com.hourse.platform.service;

import com.hourse.platform.vo.CreateUserVO;
import com.hourse.platform.vo.RoleVO;
import com.hourse.platform.vo.UpdatePwdReqVo;
import com.hourse.platform.vo.UserListVO;
import com.hourse.platform.entity.RoleGroupEntity;
import com.hourse.platform.entity.UserEntity;
import com.hourse.platform.exception.AppException;

import java.util.List;

public interface UserService extends PublicService{

  /**
   * @功能描述: 【获取用户】
   */
  UserEntity getUser(String account, String password);

  UserEntity getUserAccount(String account);

  /**
   * @功能描述: 【创建用户】
   */
  void createUser(CreateUserVO createUserVO)throws AppException;

  /**
   * @功能描述: 【获取用户列表】
   */
  List<UserListVO> getUserList();

  /**
   * @功能描述: 【获取用户角色】
   * @作   者 : Rain
   * @创建时间 : 2020/12/7 13:43
   */
  List<RoleVO> getRoleList(String userId);

  /**
   * @功能描述: 【删除用户角色】
   */
  void deleteUserRole(String userId, String roleId) throws AppException;

  /**
   * @功能描述: 【获取用户菜单】
   */
  List getUserMenuList();

  /**
   * @功能描述: 【获取有权限的地址】
   */
  List<String> getAllowPaths(List<RoleVO> roleList);


  /**
   * 注册新用户
   * @param vo
   * @throws AppException
   */
//  String registerUser(RegisterUserReqVo vo) throws AppException;


  void updatePwd(UpdatePwdReqVo vo) throws Exception;

  /**
   * 根据UserId获取用户信息
   */
    UserEntity getUserById(String userId) throws AppException;


    UserEntity getUserByPhone(String phone) throws AppException;

    boolean getUserByAccount(String phone);

    void lostUpdatePwd(String account, String newPassword) throws Exception;

    RoleGroupEntity getRoleName(String roleId);

    List<RoleGroupEntity> getRoleGroup(String epId);

    List<RoleVO> getRoleListByRoleGroupId(String roleGroupId);

    String getCurtRoleGroupId();

    String loadRoleCode(String userId);

  boolean isAdmin();
}
